package com.free.semantic.infrastruct.repository;

import com.free.semantic.model.conceptmodel.UserSemanticNetwork;
import java.util.List;

public interface UserSemanticNetworkRepository {
    
    /**
     * 创建用户和语义网络的关联
     * @param userSemanticNetwork 用户语义网络关联实体
     * @return 创建后的实体ID
     */
    Long create(UserSemanticNetwork userSemanticNetwork);

    /**
     * 删除关联
     * @param id 关联ID
     */
    void delete(Long id);

    /**
     * 根据ID查找关联
     * @param id 关联ID
     * @return 用户语义网络关联实体
     */
    UserSemanticNetwork findById(Long id);

    /**
     * 查找用户的所有语义网络关联
     * @param userId 用户ID
     * @return 用户语义网络关联列表
     */
    List<UserSemanticNetwork> findByUserId(Long userId);

    /**
     * 查找语义网络的所有用户关联
     * @param semanticNetworkId 语义网络ID
     * @return 用户语义网络关联列表
     */
    List<UserSemanticNetwork> findBySemanticNetworkId(Long semanticNetworkId);

    /**
     * 查找特定用户和语义网络的关联
     * @param userId 用户ID
     * @param semanticNetworkId 语义网络ID
     * @return 用户语义网络关联实体
     */
    UserSemanticNetwork findByUserIdAndSemanticNetworkId(Long userId, Long semanticNetworkId);

    /**
     * 更新权限
     * @param userSemanticNetwork 用户语义网络关联实体
     */
    void updatePermission(UserSemanticNetwork userSemanticNetwork);
} 